home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / ead / ead12.dms / ead12.adf / Basic / Inglese < prev    next >
Text File  |  1989-02-04  |  15KB  |  432 lines

  1.  
  2. 'inglese inizio lavori 20.9.88 fine lavori 6.12.88
  3.  
  4. CLEAR:CLS:DEFINT a-z
  5. max=300:DIM voc$(1,max)  '---vocaboli ital.(1,n) e ingl.(0,n)
  6. DIM vcb$(1):vcb$(1)="Italiano":vcb$(0)="Inglese":lng=50
  7.  
  8. '------------------- disegno titolo
  9.  
  10. COLOR 2,1
  11. LINE (2,1)-(616,27),3,bf:LINE (5,3)-(613,25),1,bf
  12. LINE (10,24)-STEP(30,-20):LINE -STEP(10,0):LINE -STEP(0,20)
  13. LINE -STEP(-10,0):LINE -STEP(0,-5):LINE -STEP(-10,0):LINE -STEP(-10,5)
  14. LINE -STEP(-10,0):PAINT STEP(30,-10),3,2                        '---A
  15. LINE STEP(20,-10)-STEP(10,0):LINE -STEP(10,5):LINE -STEP(10,-5)
  16. LINE -STEP(10,0):LINE -STEP(0,20):LINE -STEP(-10,0):LINE -STEP(0,-10)
  17. LINE -STEP(-10,5):LINE -STEP(-10,-5):LINE -STEP(0,10):LINE -STEP(-10,0)
  18. LINE -STEP(0,-20):PAINT STEP(20,10),3,2                         '---M
  19. LINE STEP(30,-10)-STEP(20,20),3,bf
  20. LINE STEP(0,0)-STEP(-20,-20),,b                                 '---I
  21. LINE STEP(30,0)-STEP(30,0):LINE -STEP(0,5):LINE -STEP(-20,0)
  22. LINE -STEP(0,10):LINE -STEP(10,0):LINE -STEP(0,-3):LINE -STEP(13,0)
  23. LINE -STEP(0,3):LINE -STEP(-3,0):LINE -STEP(0,5):LINE -STEP(-30,0)
  24. LINE -STEP(0,-20):PAINT STEP(3,3),3,2                           '---G
  25. LINE STEP(34,17)-STEP(30,-20):LINE -STEP(10,0):LINE -STEP(0,20)
  26. LINE -STEP(-10,0):LINE -STEP(0,-5):LINE -STEP(-10,0):LINE -STEP(-10,5)
  27. LINE -STEP(-10,0):PAINT STEP(30,-10),3,2                        '---A
  28. LOCATE 3,30:PRINT "Il tuo vocabolario parlante"
  29. LINE (2,30)-(616,154),3,bf
  30. LINE (2,158)-(616,185),3,bf
  31.  
  32. inizio:                                    'menu principale
  33.   GOSUB pulischermo
  34.   CALL topo(-7,8,"Inserimento nuovi termini",nv<max)
  35.   CALL topo(10,8,"Test",nv)
  36.   CALL topo(13,8,"Elenco vocaboli",nv)
  37.   CALL topo(16,8,"Vocabolario",nv)
  38.   CALL topo(7,40,"Caricamento vocaboli",1)
  39.   CALL topo(10,40,"Salvataggio vocaboli",nv)
  40.   CALL topo(13,40,"Fine",1)
  41.   LOCATE 16,40:PRINT "vocaboli in memoria n.";nv  
  42.   COLOR 1,0
  43.   LOCATE 21,3:PRINT "scegli usando il mouse o digitando la prima lettera di un'opzione attiva"
  44.   LOCATE 23,50:PRINT CHR$(169);" Claudio Ruffini   12.88";
  45.   CALL topo(0,0,k$,0) 
  46.   IF k$="V" THEN GOSUB vocabolario  
  47.   IF k$="I" THEN GOSUB inserimento
  48.   IF k$="T" THEN GOSUB test
  49.   IF k$="E" THEN GOSUB elenco
  50.   IF k$="C" THEN GOSUB carica
  51.   IF k$="S" THEN GOSUB salva
  52.   IF k$="F" THEN
  53.     IF salva=0 OR nv=0 THEN
  54.       CLS:END
  55.     ELSE
  56.       GOSUB pulischermo
  57.       LOCATE 10,5:PRINT "attenzione!!!"
  58.       PRINT SPC(4);"i vocaboli in memoria non sono salvati"
  59.       PRINT:PRINT SPC(4);"vuoi salvarli?"
  60.       CALL topo(-9,50,"Si",1)
  61.       CALL topo(12,50,"No",1)
  62.       CALL topo(15,50,"Menu",1)
  63.       CALL topo(0,0,k$,0) 
  64.       IF k$="S" THEN GOSUB salva:IF k$<>"M" THEN CLS:END
  65.       IF k$="N" THEN CLS:END
  66.     END IF
  67.   END IF
  68. GOTO inizio                                      'fine menu
  69.  
  70. inserimento:                                     'inizio inserimento
  71.   GOSUB pulischermo:LINE (456,40)-(605,124),0,b
  72.   nv=nv+1:it$="":ing$="":salva=1
  73.   LOCATE 8,62:PRINT "Inserimento"
  74.   LOCATE 10,60:PRINT USING "vocabolo n. ###";nv
  75.   LOCATE 12,60:PRINT "memoria libera:"
  76.   PRINT SPC(62);FRE(0)
  77. inserimento.1:
  78.   LOCATE 8,7:PRINT "digita il vocabolo italiano"
  79.   CALL insdati (10,4,lng,it$)
  80.   LOCATE 13,7:PRINT "digita la traduzione in inglese"
  81.   CALL insdati (15,4,lng,ing$)
  82.   IF it$="" OR ing$="" THEN GOTO inserimento.1
  83.   CALL parla (ing$,0)
  84.   voc$(1,nv)=it$:voc$(0,nv)=ing$
  85.   CALL topo(-22,4,"Correggi",1)
  86.   CALL topo(22,POS(0)+4,"Altro termine",nv<max)
  87.   CALL topo(22,POS(0)+4,"Ripeti",1)
  88.   CALL topo(22,POS(0)+4,"Spelling",1)
  89.   CALL topo(22,POS(0)+4,"Menu",1)
  90. inserimento.2:
  91.   CALL topo(0,0,k$,0)
  92.   IF k$="C" THEN LINE (6,160)-(612,183),0,bf:GOTO inserimento.1
  93.   IF k$="R" THEN CALL parla (ing$,0):GOTO inserimento.2
  94.   IF k$="S" THEN CALL parla (ing$,1):GOTO inserimento.2
  95.   IF k$="A" THEN GOTO inserimento
  96. RETURN                                           'fine inserimento
  97.  
  98. test:                                            'inizio test
  99.   tt=0:es=0:er=0:n=0:caso=0:dett=0
  100.   RANDOMIZE TIMER
  101.   GOSUB pulischermo
  102.   LOCATE 8,5:PRINT "Scegli il tipo di test"
  103.   CALL topo(-8,37,"Italiano-Inglese",1)
  104.   CALL topo(11,37,"English-Italian",1)
  105.   CALL topo(14,37,"Casuale",1)
  106.   CALL topo(17,37,"Dettato",1)
  107.   CALL topo(17,POS(0)+12,"Menu",1)
  108.   CALL topo(0,0,k$,0)
  109.   IF k$="M" THEN RETURN
  110.   IF k$="I" THEN quiz=1:solu=0
  111.   IF k$="E" THEN quiz=0:solu=1
  112.   IF k$="C" THEN caso=1:quiz=1:solu=0
  113.   IF k$="D" THEN dett=1:solu=0:quiz=1
  114. test.1:  
  115.   tt=tt+1:prove=0:trad$=""
  116.   n=INT(RND*nv+1)
  117.   FOR i=0 TO 1
  118.     prnt=INSTR(voc$(i,n),"(")-1
  119.     IF prnt>0 THEN
  120.       voc$(i,0)=LEFT$(voc$(i,n),prnt)
  121.       WHILE RIGHT$(voc$(i,0),1)=" "
  122.         voc$(i,0)=LEFT$(voc$(i,0),LEN(voc$(i,0))-1)
  123.       WEND
  124.     ELSE
  125.       voc$(i,0)=voc$(i,n)
  126.     END IF
  127.   NEXT i  
  128.   GOSUB pulischermo:LINE (456,40)-(605,124),0,b
  129.   LOCATE 8,62:PRINT USING "Quiz n. ###";tt
  130.   IF dett=1 THEN 
  131.     LOCATE 10,6:PRINT "scrivi la parola che ti detto"
  132.     WHILE trad$<>voc$(0,0) AND prove<3
  133.       CALL parla (voc$(0,n),0)
  134.       CALL insdati (14,4,lng,trad$)
  135.       prove=prove+1
  136.       LOCATE 16,4:PRINT "hai sbagliato riprova!"
  137.     WEND
  138.   ELSE
  139.     IF caso=1 THEN IF RND<.5 THEN SWAP quiz,solu
  140.     LOCATE 7,7:PRINT "vocabolo"
  141.     LOCATE 9,4:PRINT voc$(quiz,n)
  142.     LOCATE 12,7:PRINT "traduzione?"
  143.     WHILE trad$<>voc$(solu,0) AND prove<3
  144.       CALL insdati (14,4,lng,trad$)
  145.       prove=prove+1
  146.       LOCATE 16,4:PRINT "hai sbagliato riprova!"
  147.     WEND
  148.   END IF
  149.   IF trad$=voc$(solu,0) THEN                       '----- risposta esatta
  150.     es=es+1:LOCATE 16,4:PRINT "esatto!                "
  151.   ELSE                                             '-- risposta sbagliata
  152.     er=er+1:LOCATE 16,4:PRINT "sbagliato!             "
  153.   END IF
  154.   PRINT SPC(3);"la traduzione di ";:COLOR 0,2:PRINT voc$(quiz,n):COLOR 1,2
  155.   PRINT SPC(17);"e' ";:COLOR 3,2:PRINT voc$(solu,n):COLOR 1,2
  156.   LOCATE 10,62:PRINT "risposte"
  157.   LOCATE 12,62:PRINT USING "esatte n. ###";es
  158.   LOCATE 13,62:PRINT USING "eratte n. ###";er
  159.   CALL parla (voc$(0,n),0)
  160.   CALL topo(-22,4,"Altro termine",1)
  161.   CALL topo(22,POS(0)+5,"Ripeti",1)
  162.   CALL topo(22,POS(0)+5,"Spelling",1)
  163.   CALL topo(22,POS(0)+5,"Menu",1)
  164. test.2:
  165.   CALL topo(0,0,k$,0)
  166.   IF k$="A" THEN GOTO test.1
  167.   IF k$="R" THEN CALL parla (voc$(0,n),0):GOTO test.2
  168.   IF k$="S" THEN CALL parla (voc$(0,n),1):GOTO test.2
  169. RETURN                                                   'fine test
  170.  
  171. elenco:                    'inizio elenco
  172.   GOSUB pulischermo
  173.   LOCATE 8,6:PRINT "scegli l'elenco"
  174.   CALL topo(8,30,"Italiano-Inglese",1)
  175.   CALL topo(12,30,"English-Italian",1)
  176.   CALL topo(12,POS(0)+10,"Menu",1)
  177.   CALL topo(0,0,k$,0)  
  178.   IF k$="M" THEN RETURN
  179.   IF k$="I" THEN voc=1:tra=0
  180.   IF k$="E" THEN voc=0:tra=1      
  181.   LOCATE 17,30:PRINT "attendi, sto riordinando i vocaboli"
  182.   flag=1:a=1                   '   routine di sort
  183.   WHILE flag<>0
  184.     flag=0
  185.     FOR i=1 TO nv-a
  186.       IF voc$(voc,i)>voc$(voc,i+1) THEN 
  187.         SWAP voc$(voc,i),voc$(voc,i+1)
  188.         SWAP voc$(tra,i),voc$(tra,i+1)
  189.         flag=1
  190.       END IF
  191.     NEXT i
  192.     a=a+1
  193.   WEND                        '   fine routine di sort
  194.   pg=1:i=0:j=0
  195. elenco.1:
  196.   GOSUB pulischermo:LINE (456,40)-(605,124),0,b
  197.   LOCATE 8,64:PRINT "Elenco"
  198.   LOCATE 10,62:PRINT USING "pagina n. ###";pg
  199.   LOCATE 11,62:PRINT USING "totale pg ###";INT(nv/5)+.5
  200.   COLOR 0,2:LOCATE 13,64:PRINT vcb$(voc)
  201.   COLOR 1,2:LOCATE 15,64:PRINT vcb$(tra)
  202.   LOCATE 6,1
  203.   FOR j=1 TO 5
  204.     COLOR 0,2:PRINT SPC(2);voc$(voc,j+i)
  205.     COLOR 1,2:PRINT SPC(2);voc$(tra,j+i):PRINT
  206.   NEXT j  
  207.   CALL topo(-22,5,"< Pag. indietro",pg>1)
  208.   CALL topo(22,POS(0)+4,"Pag. avanti >",i+5<nv)
  209.   CALL topo(22,POS(0)+4,"Leggi",1)
  210.   CALL topo(22,POS(0)+4,"Menu",1)
  211.   CALL topo(0,0,k$,0) 
  212.   IF k$="P" THEN i=i+5:pg=pg+1
  213.   IF k$="<" THEN i=i-5:pg=pg-1
  214.   IF k$="M" THEN RETURN
  215.   IF k$="L" THEN
  216.     FOR j=1 TO 5
  217.       CALL parla (voc$(0,j+i),0)
  218.     NEXT j
  219.   END IF
  220. GOTO elenco.1                                 'fine elenco
  221.  
  222. vocabolario:                                  'inizio vocabolario
  223.   GOSUB pulischermo:LINE (456,40)-(605,124),0,b
  224.   LOCATE 8,62:PRINT "Vocabolario"
  225.   msg$="":inz=1
  226.   LOCATE 7,7:PRINT "digita il vocabolo da tradurre"
  227.   CALL insdati (10,4,lng,msg$)
  228.   LOCATE 10,60:PRINT "Termine cercato:"
  229.   LOCATE 12,62:PRINT msg$
  230. vocabolario.1:
  231.   flag=0
  232.   FOR i=inz TO nv
  233.     IF msg$=LEFT$(voc$(0,i),LEN(msg$)) THEN flag=i:i=nv:voc=0:tra=1
  234.     IF msg$=LEFT$(voc$(1,i),LEN(msg$)) THEN flag=i:i=nv:voc=1:tra=0
  235.   NEXT i
  236.   LOCATE 16,4:PRINT SPACE$(50):PRINT SPC(3);SPACE$(50)
  237.   IF flag=0 THEN
  238.     LOCATE 16,4:PRINT "termine non trovato"
  239.   ELSE
  240.     LOCATE 16,4
  241.     PRINT "la traduzione di ";:COLOR 0,2:PRINT voc$(voc,flag):COLOR 1,2
  242.     PRINT SPC(17);"e' ";:COLOR 3,2:PRINT voc$(tra,flag):COLOR 1,2
  243.     CALL parla (voc$(0,flag),0)
  244.   END IF
  245. vocabolario.2:
  246.   CALL topo(-22,3,"Altro termine",nv)
  247.   CALL topo(22,POS(0)+3,"Correggi",flag*(k$<>"E"))
  248.   CALL topo(22,POS(0)+3,"Elimina",flag*(k$<>"E"))
  249.   CALL topo(22,POS(0)+3,"Pros.ric.",flag)
  250.   CALL topo(22,POS(0)+3,"Ripeti",flag*(k$<>"E"))
  251.   CALL topo(22,POS(0)+3,"Spelling",flag*(k$<>"E"))
  252.   CALL topo(22,POS(0)+3,"Menu",1)
  253.   CALL topo(0,0,k$,0)  
  254.   IF k$="R" THEN CALL parla (voc$(0,flag),0)
  255.   IF k$="S" THEN CALL parla (voc$(0,flag),1)
  256.   IF k$="A" THEN GOTO vocabolario
  257.   IF k$="P" THEN inz=flag+1:GOTO vocabolario.1
  258.   IF k$="M" THEN RETURN
  259.   IF k$="C" THEN
  260.     it$=voc$(1,flag):ing$=voc$(0,flag)
  261.     GOSUB pulischermo:LINE (456,40)-(605,124),0,b
  262.     LOCATE 8,62:PRINT "Vocabolario"
  263.     LOCATE 10,60:PRINT "Termine cercato:"
  264.     LOCATE 12,62:PRINT msg$
  265.     LOCATE 8,7:PRINT "digita il vocabolo italiano"
  266.     CALL insdati (10,6,lng,it$)
  267.     LOCATE 12,7:PRINT "digita la traduzione in inglese"
  268.     CALL insdati (14,6,lng,ing$)
  269.     CALL parla (ing$,0)
  270.     voc$(1,flag)=it$:voc$(0,flag)=ing$
  271.     salva=1
  272.   END IF
  273.   IF k$="E" THEN
  274.     LOCATE 16,4:PRINT SPACE$(50):PRINT SPC(3);SPACE$(50)
  275.     LOCATE 16,4:PRINT "termine annullato"
  276.     nv=nv-1
  277.     FOR i=flag TO nv
  278.       voc$(1,i)=voc$(1,i+1):voc$(0,i)=voc$(0,i+1)
  279.     NEXT i
  280.     flag=flag-1:salva=1
  281.   END IF
  282. GOTO vocabolario.2                            'fine vocabolario
  283.  
  284. carica:                                 'inizio carica vocaboli
  285.   GOSUB pulischermo
  286.   flnm$=""
  287.   ON ERROR GOTO gesterr
  288. carica.1:
  289.   LOCATE 10,6:PRINT "nome del file?":CALL insdati(12,6,40,flnm$)
  290.   LOCATE 15,6:PRINT "al nome del file viene aggiunto il suffisso .ingl"
  291.   CALL topo(-22,5,"Va bene",1)
  292.   CALL topo(22,POS(0)+4,"Correggi",1)
  293.   CALL topo(22,POS(0)+4,"Menu",1)
  294.   CALL topo(0,0,k$,0)  
  295.   IF k$="C" THEN GOTO carica.1
  296.   flnm$=flnm$+".ingl"
  297.   IF k$="M" THEN RETURN
  298.   nv=0
  299.   OPEN flnm$ FOR INPUT AS #1
  300.     WHILE NOT EOF(1)
  301.       nv=nv+1
  302.       INPUT #1,voc$(1,nv),voc$(0,nv)
  303.     WEND  
  304.   CLOSE #1    
  305.   ON ERROR GOTO 0
  306. RETURN                                 'fine carica vocaboli
  307.  
  308. gesterr:                             'routine gestione errori
  309.   IF ERR<>53 THEN ON ERROR GOTO 0
  310.   LOCATE 15,6:PRINT "file non trovato";SPACE$(40)
  311.   flnm$=LEFT$(flnm$,LEN(flnm$)-5)
  312. RESUME carica.1                      'fine gestione errori
  313.                           
  314. salva:                               'inizio salva vocaboli
  315.   GOSUB pulischermo
  316.   IF flnm$>"" THEN flnm$=LEFT$(flnm$,LEN(flnm$)-5)
  317. salva.1:
  318.   LOCATE 10,6:PRINT "nome del file?":CALL insdati(12,6,40,flnm$)
  319.   LOCATE 15,6:PRINT "al nome del file viene aggiunto il suffisso .ingl"
  320.   CALL topo(-22,5,"Va bene",1)
  321.   CALL topo(22,POS(0)+4,"Correggi",1)
  322.   CALL topo(22,POS(0)+4,"Menu",1)
  323.   CALL topo(0,0,k$,0)  
  324.   IF k$="C" THEN GOTO salva.1
  325.   flnm$=flnm$+".ingl"
  326.   IF k$="M" THEN RETURN
  327.   OPEN flnm$ FOR OUTPUT AS #1
  328.     FOR i=1 TO nv
  329.       WRITE #1,voc$(1,i),voc$(0,i)
  330.     NEXT i
  331.   CLOSE #1
  332.   salva=0
  333. RETURN                                'fine salva vocaboli
  334.  
  335. pulischermo:                          'routine pulisci schermo
  336.   LINE (6,32)-(612,152),2,bf
  337.   LINE (6,160)-(612,183),0,bf
  338.   COLOR 1,2
  339. RETURN                                'fine pulisci schermo
  340.   
  341. SUB parla (msg$,S) STATIC             'sottoprogramma parla
  342.   prnt=INSTR(msg$,"(")-1
  343.   IF prnt>0 THEN
  344.     dici$=LEFT$(msg$,prnt)
  345.     WHILE RIGHT$(dici$,1)=" "
  346.       dici$=LEFT$(dici$,LEN(dici$)-1)
  347.     WEND
  348.   ELSE
  349.     dici$=msg$
  350.   END IF
  351.   IF S=0 THEN
  352.     SAY TRANSLATE$(dici$+".")
  353.   ELSE
  354.     FOR i=1 TO LEN(dici$)
  355.       SAY TRANSLATE$(MID$(dici$,i,1)+".")
  356.     NEXT i
  357.   END IF
  358. END SUB                                'fine parla
  359.  
  360. SUB insdati (r,c,l,msg$) STATIC      'sottoprogramma inserimento dati
  361.   LINE ((c-1)*8-2,(r-1)*8-2)-((c-1)*8+l*8+2,r*8+2),,b
  362.   msg$=LEFT$(msg$+SPACE$(99),l):pc=1:k=0
  363.   si$="":ce$=LEFT$(msg$,1):de$=MID$(msg$,2)
  364.   LOCATE r,c:COLOR 2,3:PRINT ce$;:COLOR 1,0:PRINT de$
  365.   WHILE k<>13
  366.     k$=INKEY$
  367.     IF k$<>"" THEN
  368.       k=ASC(k$)
  369.       IF k=31 AND pc>1 THEN                    '------------ crsr left
  370.         pc=pc-1:si$=LEFT$(msg$,pc-1)
  371.         ce$=MID$(msg$,pc,1):de$=RIGHT$(msg$,l-pc)
  372.       ELSEIF k=30 AND pc<l THEN               '------------ crsr right
  373.         pc=pc+1:si$=LEFT$(msg$,pc-1)
  374.         ce$=MID$(msg$,pc,1):de$=RIGHT$(msg$,l-pc)
  375.       ELSEIF k=8 AND pc>1 THEN                 '------------ backspace
  376.         pc=pc-1:si$=LEFT$(msg$,pc-1)
  377.         ce$=MID$(msg$,pc+1,1):de$=RIGHT$(msg$,l-pc-1)+" "
  378.       ELSEIF k=127 AND pc<l THEN              '------------ delete
  379.         si$=LEFT$(msg$,pc-1):ce$=MID$(msg$,pc+1,1)
  380.         de$=RIGHT$(msg$,l-pc-1)+" "
  381.       ELSEIF k>31 AND k<127 AND RIGHT$(msg$,1)=" " THEN  '-- carattere
  382.         IF pc<l THEN
  383.           si$=LEFT$(msg$,pc-1)+k$:ce$=MID$(msg$,pc,1)
  384.           de$=MID$(msg$,pc+1,l-pc-1):pc=pc+1                                                  
  385.         ELSE
  386.           si$=LEFT$(msg$,pc-1):ce$=k$:de$=""
  387.         END IF
  388.       ELSE
  389.         IF k<>13 THEN BEEP
  390.       END IF
  391.       LOCATE r,c:PRINT si$;:COLOR 2,3:PRINT ce$;:COLOR 1,0:PRINT de$
  392.       msg$=si$+ce$+de$
  393.     END IF
  394.   WEND
  395.   LOCATE r,c:PRINT msg$
  396.   COLOR 1,2
  397.   WHILE LEFT$(msg$,1)=" ":msg$=MID$(msg$,2):WEND
  398.   WHILE RIGHT$(msg$,1)=" ":msg$=LEFT$(msg$,LEN(msg$)-1):WEND
  399. END SUB                                 'fine inserimento dati
  400.  
  401. SUB topo (r,c,msg$,atv) STATIC      'sottop. scelta con il mouse
  402.   IF r<0 THEN ns=0:r=ABS(r):scelta$=" "
  403.   IF r>0 AND c>0 THEN
  404.     x=(c-1)*8-2:x1=(c-1)*8+LEN(msg$)*8+2
  405.     y=(r-1)*8-2:y1=r*8+2
  406.     sx(ns)=x:sx1(ns)=x1:sy(ns)=y
  407.     sy1(ns)=y1:sa$(ns)=UCASE$(LEFT$(msg$,1))
  408.     IF atv=0 THEN COLOR 3,1 ELSE COLOR 0,1:scelta$=scelta$+sa$(ns)
  409.     LINE (x-1,y-1)-(x1+1,y1+1),1,bf:
  410.     LINE (x,y)-(x1,y1),,b
  411.     LOCATE r,c:PRINT msg$;
  412.     COLOR 1,2:ns=ns+1
  413.   ELSE
  414.     msg$=""
  415.     WHILE INSTR(scelta$,msg$)<2
  416.       IF MOUSE(0)<=0 THEN
  417.         msg$=UCASE$(INKEY$)
  418.       ELSE
  419.         a=MOUSE(0)
  420.         FOR i=0 TO ns
  421.           IF MOUSE(1)>sx(i) AND MOUSE(1)<sx1(i) THEN
  422.             IF MOUSE(2)>sy(i) AND MOUSE(2)<sy1(i) THEN
  423.               msg$=sa$(i):i=ns
  424.             END IF
  425.           END IF
  426.         NEXT i
  427.       END IF
  428.     WEND
  429.   END IF
  430. END SUB                              'fine scelta con il mouse
  431.  
  432.